﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DXBase.D2D;
using DXBase;
using Windows.Foundation;
using DXBase.Structs;

namespace DXBase.D2D
{
	public static class D2DEx
	{
		public static GEOMETRY_RELATION CompareGeometries(this IGeometry srcGeometry, IGeometry inputGeometry) { return DXBase.D2D.Geometry.CompareGeometries(srcGeometry, inputGeometry); }
		public static GEOMETRY_RELATION CompareGeometries(this IGeometry srcGeometry, IGeometry inputGeometry, float3x2 inputGeometryTransform) { return DXBase.D2D.Geometry.CompareGeometries(srcGeometry, inputGeometry, inputGeometryTransform); }
		public static float Length(this IGeometry srcGeometry) { return DXBase.D2D.Geometry.Length(srcGeometry); }
		public static float Length(this IGeometry srcGeometry, float flatteningTolerance) { return DXBase.D2D.Geometry.Length(srcGeometry, flatteningTolerance); }
		public static float Length(this IGeometry srcGeometry, float3x2 worldTransform) { return DXBase.D2D.Geometry.Length(srcGeometry, worldTransform); }
		public static float Length(this IGeometry srcGeometry, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.Length(srcGeometry, worldTransform, flatteningTolerance); }
		public static float Area(this IGeometry srcGeometry) { return DXBase.D2D.Geometry.Area(srcGeometry); }
		public static float Area(this IGeometry srcGeometry, float flatteningTolerance) { return DXBase.D2D.Geometry.Area(srcGeometry, flatteningTolerance); }
		public static float Area(this IGeometry srcGeometry, float3x2 worldTransform) { return DXBase.D2D.Geometry.Area(srcGeometry, worldTransform); }
		public static float Area(this IGeometry srcGeometry, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.Area(srcGeometry, worldTransform, flatteningTolerance); }
		public static bool TryGetPointAtLength(this IGeometry srcGeometry, float length, out float2 point, out float2 tangent) { return DXBase.D2D.Geometry.TryGetPointAtLength(srcGeometry, length, out point, out tangent); }
		public static bool TryGetPointAtLength(this IGeometry srcGeometry, float length, out float2 point, out float2 tangent, float flatteningTolerance) { return DXBase.D2D.Geometry.TryGetPointAtLength(srcGeometry, length, out point, out tangent, flatteningTolerance); }
		public static bool TryGetPointAtLength(this IGeometry srcGeometry, float length, out float2 point, out float2 tangent, float3x2 worldTransform) { return DXBase.D2D.Geometry.TryGetPointAtLength(srcGeometry, length, out point, out tangent, worldTransform); }
		public static bool TryGetPointAtLength(this IGeometry srcGeometry, float length, out float2 point, out float2 tangent, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.TryGetPointAtLength(srcGeometry, length, out point, out tangent, worldTransform, flatteningTolerance); }
		public static bool FillContains(this IGeometry srcGeometry, Vector2F p) { return DXBase.D2D.Geometry.FillContains(srcGeometry, p); }
		public static bool FillContains(this IGeometry srcGeometry, Vector2F p, float flatteningTolerance) { return DXBase.D2D.Geometry.FillContains(srcGeometry, p, flatteningTolerance); }
		public static bool FillContains(this IGeometry srcGeometry, Vector2F p, float3x2 worldTransform) { return DXBase.D2D.Geometry.FillContains(srcGeometry, p, worldTransform); }
		public static bool FillContains(this IGeometry srcGeometry, Vector2F p, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.FillContains(srcGeometry, p, worldTransform, flatteningTolerance); }
		public static bool StrokeContains(this IGeometry srcGeometry, Vector2F p, float width, StrokeStyle style) { return DXBase.D2D.Geometry.StrokeContains(srcGeometry, p, width, style); }
		public static bool StrokeContains(this IGeometry srcGeometry, Vector2F p, float width, StrokeStyle style, float flatteningTolerance) { return DXBase.D2D.Geometry.StrokeContains(srcGeometry, p, width, style, flatteningTolerance); }
		public static bool StrokeContains(this IGeometry srcGeometry, Vector2F p, float width, StrokeStyle style, float3x2 worldTransform) { return DXBase.D2D.Geometry.StrokeContains(srcGeometry, p, width, style, worldTransform); }
		public static bool StrokeContains(this IGeometry srcGeometry, Vector2F p, float width, StrokeStyle style, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.StrokeContains(srcGeometry, p, width, style, worldTransform, flatteningTolerance); }
		public static Rect Bounds(this IGeometry srcGeometry) { return DXBase.D2D.Geometry.Bounds(srcGeometry); }
		public static Rect Bounds(this IGeometry srcGeometry, float3x2 inputGeometryTransform) { return DXBase.D2D.Geometry.Bounds(srcGeometry, inputGeometryTransform); }
		public static Rect WidenedBounds(this IGeometry srcGeometry, float width, StrokeStyle style) { return DXBase.D2D.Geometry.WidenedBounds(srcGeometry, width, style); }
		public static Rect WidenedBounds(this IGeometry srcGeometry, float width, StrokeStyle style, float flatteningTolerance) { return DXBase.D2D.Geometry.WidenedBounds(srcGeometry, width, style, flatteningTolerance); }
		public static Rect WidenedBounds(this IGeometry srcGeometry, float width, StrokeStyle style, float3x2 worldTransform) { return DXBase.D2D.Geometry.WidenedBounds(srcGeometry, width, style, worldTransform); }
		public static Rect WidenedBounds(this IGeometry srcGeometry, float width, StrokeStyle style, float3x2 worldTransform, float flatteningTolerance) { return DXBase.D2D.Geometry.WidenedBounds(srcGeometry, width, style, worldTransform, flatteningTolerance); }
	}
}
